package com.ssi.core.framework.dao.dialect.impl;

import com.ssi.core.framework.dao.dialect.Dialect;

/**
 * 类说明：MySQL方言实现
 * @创建时间 Jan 8, 2011 4:01:31 PM
 * @创建人： Farley
 * @邮箱：kfy0521@163.com
 */

public class MySQLDialect implements Dialect {

	protected static final String SQL_END_DELIMITER = ";";  
	
    public String getLimitString(String sql, boolean hasOffset) {   
        return new StringBuffer(sql.length() + 20).append(trim(sql)).append(   
                hasOffset ? " limit ?,?" : " limit ?")   
                .append(SQL_END_DELIMITER).toString();   
    }   
    
    public String getLimitString(String sql, int offset, int limit) {   
        sql = trim(sql);   
        StringBuffer sb = new StringBuffer(sql.length() + 20);   
        sb.append(sql);   
        if (offset > 0) {   
            sb.append(" limit ").append(offset).append(',').append(limit)   
                    .append(SQL_END_DELIMITER);   
        } else {   
            sb.append(" limit ").append(limit).append(SQL_END_DELIMITER);   
        }   
        return sb.toString();   
    }   
    
    public boolean supportsLimit() {   
        return true;   
    }   
    
    private String trim(String sql) {   
        sql = sql.trim();   
        if (sql.endsWith(SQL_END_DELIMITER)) {   
            sql = sql.substring(0, sql.length() - 1  
                    - SQL_END_DELIMITER.length());   
        }   
        return sql;   
    }   

}
